<template>
  <div>
    <el-row class="bgf">
      <el-col :span="12" :offset="5">
        <el-form
          :model="ruleForm"
          :rules="rules"
          ref="ruleForm"
          label-width="100px"
          class="demo-ruleForm"
        >
          <el-form-item label="类型" prop="type">
            <el-radio
              :disabled="$route.params.id ? true : false"
              v-model="ruleForm.type"
              :label="1"
              >目录</el-radio
            >
            <el-radio
              :disabled="$route.params.id ? true : false"
              v-model="ruleForm.type"
              :label="2"
              >菜单</el-radio
            >
          </el-form-item>
          <!-- 二级菜单才会有这个选项，通过v-show控制 -->
          <el-form-item label="上级" prop="pid" v-show="ruleForm.type == 2">
            <el-select v-model="ruleForm.pid" placeholder="请选择父级">
              <el-option label="顶级目录" :value="0"></el-option>
              <el-option label="系统设置" :value="1"></el-option>
              <el-option label="商城管理" :value="8"></el-option>
              <!-- <el-option v-for="item in menulist" :label="item.title" :value="item.id" :key="item.id"></el-option> -->
            </el-select>
          </el-form-item>
          <el-form-item label="标题" prop="title">
            <el-input v-model="ruleForm.title"></el-input>
          </el-form-item>
          <el-form-item label="图标" prop="icon">
            <el-input v-model="ruleForm.icon"></el-input>
          </el-form-item>
          <el-form-item label="状态" prop="status">
            <el-radio v-model="ruleForm.status" :label="1">正常</el-radio>
            <el-radio v-model="ruleForm.status" :label="0">禁用</el-radio>
          </el-form-item>
          <el-form-item>
            <el-button
              type="primary"
              v-if="!$route.params.id"
              @click="submitForm('ruleForm')"
              >立即添加</el-button
            >
            <el-button type="success" v-else @click="submitForm('ruleForm')"
              >立即修改</el-button
            >
            <el-button @click="resetForm('ruleForm')">重置</el-button>
          </el-form-item>
        </el-form>
      </el-col>
    </el-row>
  </div>
</template>
<script>
import {menuinfo} from '../../http'
export default {
  data() {
    return {
      ruleForm: {
        // 标题
        title: "",
        // 类型 1目录，2菜单
        type: 1,
        // 标题
        icon: "",
        // 状态 1正常,2禁用
        status: 1,
      },
      rules: {
        title: [{ required: true, message: "请输入标题", trigger: "blur" }],
      },
    };
  },
  created() {
    // 判断修改还是新增
    if (this.$route.params.id) {
      // 获取id对应的菜单的数据
      this.getInfoById(this.$route.params.id);
    }
  },
  methods: {
    // 修改菜单时，根据id获取菜单信息
    async getInfoById(id) {
      // console.log(await menuinfo(this.$route.params.id));
      this.ruleForm = await menuinfo(this.$route.params.id);
    },
    // 点击按钮，先校验
    submitForm(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          // 校验成功后，才可以提交数据
          if (this.$route.params.id) {
            // 有id说明是修改
            this.editMenu();
          } else {
            // 没有id，是新增
            this.addMenu();
          }
        } else {
          console.log("error submit!!");
          return false;
        }
      });
    },
    // 添加菜单
    addMenu() {
      this.$axios
        .post("/menuadd", {
          // 这里要传真实的pid，一级目录的pid是0，二级菜单的pid是对应的id值，从下拉框中获取
          pid: 0,
          title: this.ruleForm.title,
          icon: this.ruleForm.icon,
          // 1目录2菜单
          // 看文档！！！这里需要传数字1或2
          type: this.ruleForm.type,
          url: this.ruleForm.url,
          // 1正常 2禁用
          // 看文档！！！这里需要传数字1或2
          status: this.ruleForm.status,
        })
        .then((res) => {
          console.log(res);
        })
        .catch((err) => {
          console.log(err);
        });
    },
    // 真的修改了
    editMenu() {
      this.$axios
        .post("/menuedit", {
          id: this.$route.params.id,
          // 这里要传真实的pid，一级目录的pid是0，二级菜单的pid是对应的id值，从下拉框中获取
          pid: 0,
          title: this.ruleForm.title,
          icon: this.ruleForm.icon,
          // 1目录2菜单
          // 看文档！！！这里需要传数字1或2
          type: this.ruleForm.type,
          url: this.ruleForm.url,
          // 1正常 2禁用
          // 看文档！！！这里需要传数字1或2
          status: this.ruleForm.status,
        })
        .then((res) => {
          console.log(res);
        })
        .catch((err) => {
          console.log(err);
        });
    },
  },
};
</script>
<style lang="">
</style>